home *** CD-ROM | disk | FTP | other *** search
- class SSLevel
- {
- var worldConstructor;
- var objects;
- var name;
- var preProcess;
- var background;
- var music;
- var processID;
- var onReadXMLComplete;
- var lastTime;
- var intervalID;
- var onComplete;
- var startNode = "Start";
- var startX = 0;
- var startY = 0;
- var levelLeft = 0;
- var levelRight = 0;
- var levelTop = 0;
- var levelBottom = 0;
- var current = 0;
- var total = 0;
- var pauseTime = 20;
- var ready = false;
- var editor_docObject = true;
- var editor_args_names = ["levelName","preProcess","background","startNode","music"];
- var editor_args_values = ["name","preProcess","background","Start","music"];
- var editor_args_types = ["string","string","string","string","string"];
- var editor_args_options = ["A-Za-z0-9","A-Za-z","A-Za-z0-9","A-Za-z0-9","A-Za-z0-9"];
- var editor_args_descriptions = [];
- var editor_args_mode = [0,0,0,0,0];
- var editor_args_component = ["TextInput","TextInput","TextInput","TextInput","TextInput"];
- var editor_commands = [];
- function SSLevel(x)
- {
- this.worldConstructor = GameWorld;
- this.objects = [];
- switch(typeof x)
- {
- case "string":
- this.name = x;
- break;
- case "object":
- this.readXML(x);
- }
- }
- function addObject()
- {
- this.objects.push(arguments);
- }
- function readXML(xObj)
- {
- this.ready = false;
- var wn = xObj.firstChild;
- var attr = wn.attributes;
- this.name = attr.levelName;
- this.preProcess = eval(attr.preProcess);
- this.background = _global[attr.background];
- this.startNode = attr.startNode;
- this.music = attr.music;
- var a;
- var i = -1;
- var c = a = wn.childNodes.length;
- while(++i < c)
- {
- if(a[i].nodeName === "objects")
- {
- this.readObjects(wn.firstChild);
- }
- }
- this.readXMLComplete();
- }
- function readObjects(node)
- {
- var types = node.attributes.types.split(",");
- var objData = node.firstChild.nodeValue;
- var i = types.length;
- while(--i > -1)
- {
- types[i] = eval(types[i]);
- }
- var aObjs = objData.split(SSGlobal.ED_OBJ_DELIMETER);
- var objAttrDelim = SSGlobal.ED_OBJ_ATTR_DELIM;
- var i = -1;
- var c = aObjs.length;
- while(++i < c)
- {
- var a = aObjs[i].split(objAttrDelim);
- var j = a.length;
- a[0] = types[a[0]];
- while(--j)
- {
- var v = a[j];
- if(v == "")
- {
- a[j] = null;
- }
- else
- {
- var char = v.charAt(0);
- if(char == "\"" || char == "\'")
- {
- a[j] = v.substring(1,v.length - 1);
- }
- else
- {
- v = Number(v);
- if(isNaN(v))
- {
- var tmp = eval(a[j]);
- if(tmp != null)
- {
- a[j] = tmp;
- }
- }
- else
- {
- a[j] = v;
- }
- }
- }
- }
- this.addObject.apply(this,a);
- }
- }
- function readXMLStep()
- {
- }
- function readXMLComplete()
- {
- clearInterval(this.processID);
- delete this.processID;
- this.ready = true;
- this.onReadXMLComplete();
- }
- function build(base)
- {
- this.ready = false;
- var _loc4_ = new this.worldConstructor(this.name);
- _loc4_.name = this.name;
- base.addWorld(_loc4_);
- this.levelLeft = this.levelTop = 268435455;
- this.levelRight = this.levelBottom = -268435455;
- this.preProcess(base,_loc4_);
- if(typeof this.background == "function")
- {
- this.background(_loc4_);
- }
- else
- {
- var _loc3_ = this.background.layers.length;
- while((_loc3_ = _loc3_ - 1) > -1)
- {
- var _loc2_ = {};
- _loc2_.__proto__ = this.background.layers[_loc3_];
- _loc4_.addBackground(_loc2_);
- }
- }
- this.processObjects(base,_loc4_);
- return _loc4_;
- }
- function processObjects(base, ssw)
- {
- this.lastTime = getTimer();
- this.current = -1;
- this.total = this.objects.length;
- this.intervalID = setInterval(function(o, base, ssw)
- {
- o.objectsStep(base,ssw);
- }
- ,0,this,base,ssw);
- }
- function objectsStep(base, ssw)
- {
- var _loc4_ = Math.abs(getTimer() - (this.lastTime = getTimer()));
- while(++this.current < this.total)
- {
- var _loc2_ = this.objects[this.current];
- this.processObject(ssw,_loc2_);
- }
- if(this.current == this.total)
- {
- this.complete(base,ssw);
- clearInterval(this.intervalID);
- }
- updateAfterEvent();
- }
- function processObject(ssw, aData)
- {
- var _loc12_ = aData[1];
- var _loc11_ = aData[2];
- var _loc10_ = aData[3];
- var _loc4_ = aData[0];
- var _loc5_ = aData[4];
- var _loc7_ = aData[5] != null ? Number(aData[5]) : _loc4_.prototype.depthLayer;
- var _loc8_ = aData[6] != null ? aData[6] : null;
- var _loc6_ = !(aData[7] == null || aData[7] == "") ? aData[7] : null;
- var _loc9_ = aData.slice(10);
- if(_loc4_ == null)
- {
- return false;
- }
- var _loc2_ = {};
- _loc2_.__proto__ = _loc4_.prototype;
- if(_loc4_ == SSShapeInstance)
- {
- _loc4_.call(_loc2_,ssw.shapes[_loc9_[0]]);
- }
- else
- {
- _loc4_.apply(_loc2_,_loc9_);
- }
- _loc2_.x = _loc12_;
- _loc2_.y = _loc11_;
- _loc2_.z = _loc10_;
- if(_loc5_ != "" && _loc5_ != null)
- {
- _loc2_.assetID = _loc5_;
- }
- if(_loc7_ != _loc2_.depthLayer)
- {
- _loc2_.depthLayer = Number(_loc7_);
- }
- if(_loc8_ != null)
- {
- _loc2_.frame = _loc8_;
- }
- if(_loc6_ != null)
- {
- _loc2_.name = _loc6_;
- }
- ssw.addObject(_loc2_);
- this.levelLeft = Math.min(this.levelLeft,_loc2_.left);
- this.levelTop = Math.min(this.levelTop,_loc2_.top);
- this.levelRight = Math.max(this.levelRight,_loc2_.right);
- this.levelBottom = Math.max(this.levelBottom,_loc2_.bottom);
- }
- function complete(base, ssw)
- {
- this.ready = true;
- ssw.levelLeft = this.levelLeft;
- ssw.levelTop = this.levelTop;
- ssw.levelRight = this.levelRight;
- ssw.levelBottom = this.levelBottom;
- this.onComplete(base,ssw);
- }
- function onStatus()
- {
- }
- function toString()
- {
- return "SSLevel " + this.name;
- }
- }
-